“B” and “not-B” AVRs
Від публікації огляду відмінностей між «A» і «не-A»-версіями мікроконтролерів AVR пройшло чимало часу і вже давно можна порівнювати «B»-версії. Таких мікроконтролерів ще небагато, але є на що подивитися. Errata на кристали я ще не вивчав, як там буде що важливе — доповню пізніше.
Раніше я вже коротко писав про ATmega48PB…168PB. ATmega328PB і ATmega324PB просунулися набагато далі, це вже практично нові мікроконтролери, сумісні по виводах з «not-B». Для всіх цих мікроконтролерів є спільний, з першого погляду непомітний, але важливий момент — DIP-корпусів більше нема. Тому тим, хто розраховує лише на них, далі можна не читати 😉
З точки зору програматора змінилися лише сигнатури (ідентифікатри) мікроконтролерів та додався один fuse в ATmega328PB і ATmega324PB. Він забороняє нову функцію (CFD, див. нижче) і з заводу запрограмований. Якщо його не треба міняти і якщо можна змусити програматор проігнорувати сигнатуру, то всі ці кристали можна прошивати як відповідні PA. Втім, в avreal ці мікроконтролери вже додано, а для всіх іншіх програматори це, думаю, зроблено давно 🙂
Можливо, цей список і не збільшуватиметься вже, бо анонсовано геть нові ATmega3208/3209/4808/4809 із суттєво збільшеним обсягом оперативної пам’яті (натомість зменшеною EEPROM) та розширеною периферією.
Отже, відмінності:
Відмінності ATmega48PB/88PB/168PB від ATmega48PA/88PA/168PA
Документація на ATmega48PB/88PB/168PB і опис відмінностей.
- Прибрано надлишкову пару VCC/GND, ці виводи тепер знаходсться в PORTE
- Виводи ADC6, ADC7, які досі не були портами, також тепер в PORTE, разом із попереднім чотири додаткових IO.
- Вихід вбудованого компаратора можна подати на нжку PE0, для керування додано новий регістр ACSRB
- USART може працювати в sleep, по старт-біту вмикається генератор. Мікроконтролер може прокидатися і по старт-біту, і вже аж по закінченню приймання байту, біти керування у новому регістрі UCSR0D.
- CKSEL — пропав full swing XTAL (CKSEL 011x), у кого стояло таке — поміняти налаштування fuses для програматора (CKSEL 100x–111x). Інші fuses не змінилися.
- Додано 9-байтовий унікальний ідентифікатор кристалу, який можна прочитати командою LPM після встановлення біта SIGRD в SPMCSR або навіть через «верхні» через порти IO з адресами F0-F8 (у дурному порядку).
- Електричні характеристики
- Заводське калібрування RC-генератора тепер не ±10%, а лише ±2% (±5% у повному діапазоні напруг і температур), крок через OSCCAL не змінився, ±1%
- Дещо впало падіння напруги на виході при максимальному навантаженні
- Став трохи швидшим компаратор
- Зі струмами споживання каша — десь типові трохи збільшилися а максимальні зменшилися, десь типові збільшилися. То треба уважно дивитися, кого що цікавить. Струм PowerSave виріс!
Відмінності ATmega328PB від ATmega328P
Документація на ATmega328PB і опис відмінностей.
Зміни більші, навіть в описові відмінностей підкреслено «ATmega328PB is not a drop-in replacement for ATmega328 variants, but a new device».
Окрім всього перерахованого вище для ATmega48PB…ATmega168PB маємо ще:
- Додалося по одному USART, I2C і SPI. Втім, ніжок не вистачає і USART1 сидить на тих же, що й SPI0. Оскільки комутатора периферії по портах нема, то одночасно використати не вийде.
- Додалися два 16-бітних таймери TC3 і TC4, разом стало 10 PWM. Виходи output-compare-B додаткових таймерів на одній ніжці (PD2) і якщо увімкнені обидва, то збираються по AND або по OR залежно від стану бітика PORTD2.
- З’явився апаратний touch-контролер, «Low CPU utilization through interrupt on acquisition-complete» і все таке, але в DS робота і регістри не описані, згадано лише які лінії сканування на які виводи мікроконтролера виведено і про фірмову бібліотеку QTouch.
- Clock Failure Detection для OSC32K і XTAL з перемиканням на IntRC 1 MHz і можливістю переривання по події. fuse «disable CFD» з заводу прошите, тобто за умовчанням функцію вимкнено.
Відмінності ATmega324PB від ATmega324PA
Документація на ATmega324PB і опис відмінностей.
Все те ж саме, що для ATmega328PB (разом із підмножиною зміна у ATmega48PB…ATmega168PB). Єдине що USART-ів й до того було два, то після додавання ще одного їх стало три. Та ще надлишковими визнано дві пари VCC/GND, разом із ними у PORTE пішли ще два виводи XTAL та ніжка AREF, тобто додатковий PORTE має аж сім IO. У багатьох випадках це дасть можливість обійтися 44-виводним корпусом.
Виглядає так, що ATmega328PB і ATMega324PB утворюють нову «лінійку», позаяк вони схожіші між собою, ніж кожен із них та відповідна P/PA-версія чи ATMega328PB та відповідні 8/16-кілобайтні PB-версії.